﻿<html xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:mshelp="http://msdn.microsoft.com/mshelp" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" />
    <META NAME="save" CONTENT="history" />
    <title>MemorySnapshot Class</title>
    <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
    <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
    <script type="text/javascript" src="../scripts/EventUtilities.js"> </script>
    <script type="text/javascript" src="../scripts/SplitScreen.js"> </script>
    <script type="text/javascript" src="../scripts/Dropdown.js"> </script>
    <script type="text/javascript" src="../scripts/script_manifold.js"> </script>
    <script type="text/javascript" src="../scripts/script_feedBack.js"> </script>
    <script type="text/javascript" src="../scripts/CheckboxMenu.js"> </script>
    <script type="text/javascript" src="../scripts/CommonUtilities.js"> </script>
    <meta name="container" content="Microsoft.Test.LeakDetection" />
    <meta name="file" content="T_Microsoft_Test_LeakDetection_MemorySnapshot" />
    <meta name="guid" content="T_Microsoft_Test_LeakDetection_MemorySnapshot" />
    <xml>
      <MSHelp:Attr Name="AssetID" Value="T:Microsoft.Test.LeakDetection.MemorySnapshot" />
      <MSHelp:TOCTitle Title="MemorySnapshot Class" />
      <MSHelp:RLTitle Title="MemorySnapshot Class (Microsoft.Test.LeakDetection)" />
      <MSHelp:Keyword Index="A" Term="T:Microsoft.Test.LeakDetection.MemorySnapshot" />
      <MSHelp:Keyword Index="A" Term="frlrfMicrosoftTestLeakDetectionMemorySnapshotClassTopic" />
      <MSHelp:Keyword Index="K" Term="MemorySnapshot class" />
      <MSHelp:Keyword Index="K" Term="Microsoft.Test.LeakDetection.MemorySnapshot class" />
      <MSHelp:Keyword Index="K" Term="MemorySnapshot class, about MemorySnapshot class" />
      <MSHelp:Keyword Index="F" Term="MemorySnapshot" />
      <MSHelp:Keyword Index="F" Term="Microsoft.Test.LeakDetection.MemorySnapshot" />
      <MSHelp:Attr Name="HelpPriority" Value="2" />
      <MSHelp:Attr Name="APIType" Value="Managed" />
      <MSHelp:Attr Name="APILocation" Value="TestApiCore.dll" />
      <MSHelp:Attr Name="APIName" Value="Microsoft.Test.LeakDetection.MemorySnapshot" />
      <MSHelp:Attr Name="DevLang" Value="CSharp" />
      <MSHelp:Attr Name="DevLang" Value="VB" />
      <MSHelp:Attr Name="DevLang" Value="C++" />
      <MSHelp:Attr Name="Locale" Value="en-us" />
      <MSHelp:Attr Name="TopicType" Value="kbSyntax" />
      <MSHelp:Attr Name="TopicType" Value="apiref" />
      <MSHelp:Attr Name="Abstract" Value="Represents a snapshot in time of the memory consumed by a specified OS process. MemorySnapshot objects can be instantiated from a running process or from a file. MemorySnapshot objects are used for detectio ..." />
      <MSHelp:Attr Name="AssemblyVersion" Value="0.0.0.0" />
      <MSHelp:Attr Name="NoName" Value="" />
    </xml>
    <link type="text/css" rel="stylesheet" href="../styles/highlight.css" />
    <script type="text/javascript" src="../scripts/highlight.js"></script>
  </head>
  <body>
    <input type="hidden" id="userDataCache" class="userDataStyle" />
    <input type="hidden" id="hiddenScrollOffset" />
    <img id="collapseImage" style="display:none; height:0; width:0;" src="../icons/collapse_all.gif" title="Collapse image" />
    <img id="expandImage" style="display:none; height:0; width:0;" src="../icons/expand_all.gif" title="Expand Image" />
    <img id="collapseAllImage" style="display:none; height:0; width:0;" src="../icons/collapse_all.gif" />
    <img id="expandAllImage" style="display:none; height:0; width:0;" src="../icons/expand_all.gif" />
    <img id="dropDownImage" style="display:none; height:0; width:0;" src="../icons/dropdown.gif" />
    <img id="dropDownHoverImage" style="display:none; height:0; width:0;" src="../icons/dropdownHover.gif" />
    <img id="copyImage" style="display:none; height:0; width:0;" src="../icons/copycode.gif" title="Copy image" />
    <img id="copyHoverImage" style="display:none; height:0; width:0;" src="../icons/copycodeHighlight.gif" title="CopyHover image" />
    <div id="header">
      <table id="topTable" cellspacing="0" cellpadding="0">
        <tr>
          <td>
            <span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0">
              <img ID="toggleAllImage" class="toggleAll" src="../icons/collapse_all.gif" /> <label id="collapseAllLabel" for="toggleAllImage" style="display: none;">Collapse All</label><label id="expandAllLabel" for="toggleAllImage" style="display: none;">Expand All</label> </span>
            <span>    </span>
            <span id="devlangsDropdown" class="filter" tabindex="0">
              <img id="devlangsDropdownImage" src="../icons/dropdown.gif" /> <label id="devlangsMenuAllLabel" for="devlangsDropdownImage" style="display: none;"><nobr>Code: All </nobr></label><label id="devlangsMenuMultipleLabel" for="devlangsDropdownImage" style="display: none;"><nobr>Code: Multiple </nobr></label><label id="devlangsMenuCSharpLabel" for="devlangsDropdownImage" style="display: none;"><nobr>Code: C# </nobr></label><label id="devlangsMenuVisualBasicLabel" for="devlangsDropdownImage" style="display: none;"><nobr>Code: Visual Basic </nobr></label><label id="devlangsMenuManagedCPlusPlusLabel" for="devlangsDropdownImage" style="display: none;"><nobr>Code: Visual C++ </nobr></label></span>
          </td>
        </tr>
      </table>
      <div id="devlangsMenu">
        <input id="CSharpCheckbox" type="checkbox" data="CSharp,cs,'persist'" value="on" onClick="SetLanguage(this)" />
        <label class="checkboxLabel" for="CSharpCheckbox">C#</label>
        <br />
        <input id="VisualBasicCheckbox" type="checkbox" data="VisualBasic,vb,'persist'" value="on" onClick="SetLanguage(this)" />
        <label class="checkboxLabel" for="VisualBasicCheckbox">Visual Basic</label>
        <br />
        <input id="ManagedCPlusPlusCheckbox" type="checkbox" data="ManagedCPlusPlus,cpp,'persist'" value="on" onClick="SetLanguage(this)" />
        <label class="checkboxLabel" for="ManagedCPlusPlusCheckbox">Visual C++</label>
        <br />
      </div>
      <table id="bottomTable" cellpadding="0" cellspacing="0">
        <tr id="headerTableRow1">
          <td align="left">
            <span id="runningHeaderText">.</span>
          </td>
        </tr>
        <tr id="headerTableRow2">
          <td align="left">
            <span id="nsrTitle">MemorySnapshot Class</span>
          </td>
        </tr>
        <tr id="headerTableRow3">
          <td align="left">
            <a href="AllMembers_T_Microsoft_Test_LeakDetection_MemorySnapshot.htm">Members</a>  <a href="#exampleToggle" onclick="OpenSection(exampleToggle)">Example</a>  <a href="#seeAlsoToggle" onclick="OpenSection(seeAlsoToggle)">See Also</a>  
  <span id="headfeedbackarea" class="feedbackhead">
      <a href="javascript:SubmitFeedback('testapi@microsoft.com','.','','','','%0\dYour%20feedback%20is%20used%20to%20improve%20the%20documentation%20and%20the%20product.%20Your%20e-mail%20address%20will%20not%20be%20used%20for%20any%20other%20purpose%20and%20is%20disposed%20of%20after%20the%20issue%20you%20report%20is%20resolved.%20%20While%20working%20to%20resolve%20the%20issue%20that%20you%20report,%20you%20may%20be%20contacted%20via%20e-mail%20to%20get%20further%20details%20or%20clarification%20on%20the%20feedback%20you%20sent.%20After%20the%20issue%20you%20report%20has%20been%20addressed,%20you%20may%20receive%20an%20e-mail%20to%20let%20you%20know%20that%20your%20feedback%20has%20been%20addressed.%0\A%0\d','Customer%20Feedback');">
        
        Send Feedback
      </a>
	</span>
</td>
        </tr>
      </table>
      <table id="gradientTable">
        <tr>
          <td class="nsrBottom" background="../icons/gradient.gif" />
        </tr>
      </table>
    </div>
    <div id="mainSection">
      <div id="mainBody">
        <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()" />
        <span style="color: DarkGray"> </span>
        <div class="summary">
             Represents a snapshot in time of the memory consumed by a specified OS process.
             MemorySnapshot objects can be instantiated from a running process or from a file. 
             <p>MemorySnapshot objects are used for detection of <a href="http://en.wikipedia.org/wiki/Memory_leak">memory leaks</a>.</p></div>
        <p />
    <b>Namespace:</b> 
   <a href="N_Microsoft_Test_LeakDetection.htm">Microsoft.Test.LeakDetection</a><br />
    <b>Assembly:</b>
   <span sdata="assembly">TestApiCore</span> (in TestApiCore.dll) Version: 0.0.0.0<h1 class="heading"><span onclick="ExpandCollapse(syntaxToggle)" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(syntaxToggle, event)" tabindex="0"><img id="syntaxToggle" class="toggle" name="toggleSwitch" src="../icons/collapse_all.gif" />Syntax</span></h1><div id="syntaxSection" class="section" name="collapseableSection" style=""><div id="syntaxCodeBlocks" class="code"><span codeLanguage="CSharp"><table><tr><th>C#</th></tr><tr><td><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">MemorySnapshot</span></pre></td></tr></table></span><span codeLanguage="VisualBasicDeclaration"><table><tr><th>Visual Basic (Declaration)</th></tr><tr><td><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">MemorySnapshot</span></pre></td></tr></table></span><span codeLanguage="ManagedCPlusPlus"><table><tr><th>Visual C++</th></tr><tr><td><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">MemorySnapshot</span></pre></td></tr></table></span></div></div><h1 class="heading"><span onclick="ExpandCollapse(remarksToggle)" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(remarksToggle, event)" tabindex="0"><img id="remarksToggle" class="toggle" name="toggleSwitch" src="../icons/collapse_all.gif" />Remarks</span></h1><div id="remarksSection" class="section" name="collapseableSection" style="">
        <p>For more information on memory leak detection in native code, refer to the <a href="http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx">
             Memory Leak Detection and Isolation</a> article. The table below provides a relationship between the metrics reported by the different tools: 
             </p>
        <table style="font-size:xx-small" border="1" bordercolor="#CCCCCC" cellpadding="1" cellspacing="0">
          <tr>
            <td>
              <strong>TestApi</strong>
            </td>
            <td>
              <strong>
                <a href="http://msdn.microsoft.com/en-us/library/aa373083(VS.85).aspx">Performance Counters</a>
              </strong>
            </td>
            <td>
              <strong>
                <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx">Process Explorer</a>
              </strong>
            </td>
            <td>
              <strong>Task Manager (Windows 7)</strong>
            </td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_GdiObjectCount.htm">GdiObjectCount</a>
            </td>
            <td> - </td>
            <td>Handles : GDI Objects</td>
            <td>GDI Handles</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_HandleCount.htm">HandleCount</a>
            </td>
            <td>HandleCount</td>
            <td>Handles : Handles</td>
            <td>Handles</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_PageFileBytes.htm">PageFileBytes</a>
            </td>
            <td>PageFileBytes</td>
            <td> - </td>
            <td> - </td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_PageFilePeakBytes.htm">PageFilePeakBytes</a>
            </td>
            <td>PageFileBytesPeak</td>
            <td> - </td>
            <td> - </td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_PoolNonpagedBytes.htm">PoolNonpagedBytes</a>
            </td>
            <td>Pool Nonpaged Bytes</td>
            <td> - </td>
            <td>NonPaged Pool</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_PoolPagedBytes.htm">PoolPagedBytes</a>
            </td>
            <td>Pool Paged Bytes</td>
            <td> - </td>
            <td>Paged Pool</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_ThreadCount.htm">ThreadCount</a>
            </td>
            <td> - </td>
            <td>Threads</td>
            <td>Threads</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_Timestamp.htm">Timestamp</a>
            </td>
            <td> - </td>
            <td> - </td>
            <td> - </td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_UserObjectCount.htm">UserObjectCount</a>
            </td>
            <td> - </td>
            <td>Handles : USER Objects</td>
            <td>USER Handles</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_VirtualMemoryBytes.htm">VirtualMemoryBytes</a>
            </td>
            <td>VirtualBytes</td>
            <td>Virtual Memory : Virtual Size</td>
            <td> - </td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_VirtualMemoryPrivateBytes.htm">VirtualMemoryPrivateBytes</a>
            </td>
            <td>PrivateBytes</td>
            <td>Virtual Memory : Private Bytes</td>
            <td>Commit Size</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_WorkingSetBytes.htm">WorkingSetBytes</a>
            </td>
            <td>WorkingSet</td>
            <td>Physical Memory : WorkingSet</td>
            <td>Working Set (Memory)</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_WorkingSetPeakBytes.htm">WorkingSetPeakBytes</a>
            </td>
            <td>WorkingSetPeak</td>
            <td>Physical Memory : Peak Working Set</td>
            <td>Peak Working Set (Memory)</td>
          </tr>
          <tr>
            <td>
              <a href="P_Microsoft_Test_LeakDetection_MemorySnapshot_WorkingSetPrivateBytes.htm">WorkingSetPrivateBytes</a>
            </td>
            <td>WorkingSetPrivate</td>
            <td>Physical Memory : Working Set : WS Private</td>
            <td>Memory (Private Working Set)</td>
          </tr>
        </table>
      </div><h1 class="heading"><span onclick="ExpandCollapse(exampleToggle)" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(exampleToggle, event)" tabindex="0"><img id="exampleToggle" class="toggle" name="toggleSwitch" src="../icons/collapse_all.gif" />Examples</span></h1><div id="exampleSection" class="section" name="collapseableSection" style="">
             The following example demonstrates taking two memory snapshots of Notepad and comparing them for leaks.
             <span id="cbc_1" x-lang="CSharp" codeLanguage="CSharp"><div class="highlight-title"><span class="highlight-copycode" onkeypress="javascript:CopyColorizedCodeCheckKey(this.parentNode, event);" tabindex="0" onmouseover="CopyCodeChangeIcon(this)" onmouseout="CopyCodeChangeIcon(this)" onclick="javascript:CopyColorizedCode(this.parentNode);"><img src="../icons/CopyCode.gif" style="margin-right: 5px;" />Copy</span>C#</div><div class="code"><pre>Process p = Process.Start(<span class="highlight-literal">"notepad.exe"</span>);
p.WaitForInputIdle(<span class="highlight-number">5000</span>);
Thread.Sleep(<span class="highlight-number">3000</span>);
MemorySnapshot s1 = MemorySnapshot.FromProcess(p.Id);

<span class="highlight-comment">// Perform operations that may cause a leak...</span>

MemorySnapshot s2 = MemorySnapshot.FromProcess(p.Id);

MemorySnapshot diff = s2.CompareTo(s1);
<span class="highlight-keyword">if</span> (diff.GdiObjectCount != <span class="highlight-number">0</span>)
{
    s1.ToFile(<span class="highlight-literal">@"\s1.xml"</span>);
    s2.ToFile(<span class="highlight-literal">@"\s2.xml"</span>);
    Console.WriteLine(<span class="highlight-literal">"Possible GDI handle leak! Review the saved memory snapshots."</span>);
}

p.CloseMainWindow();
p.Close();</pre></div></span></div><h1 class="heading"><span onclick="ExpandCollapse(familyToggle)" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(familyToggle, event)" tabindex="0"><img id="familyToggle" class="toggle" name="toggleSwitch" src="../icons/collapse_all.gif" />Inheritance Hierarchy</span></h1><div id="familySection" class="section" name="collapseableSection" style=""><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span class="languageSpecificText"><span class="cs">.</span><span class="vb">.</span><span class="cpp">::</span><span class="nu">.</span></span>Object</a><br />  <span class="selflink">Microsoft.Test.LeakDetection<span class="languageSpecificText"><span class="cs">.</span><span class="vb">.</span><span class="cpp">::</span><span class="nu">.</span></span>MemorySnapshot</span><br /></div><h1 class="heading"><span onclick="ExpandCollapse(seeAlsoToggle)" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(seeAlsoToggle, event)" tabindex="0"><img id="seeAlsoToggle" class="toggle" name="toggleSwitch" src="../icons/collapse_all.gif" />See Also</span></h1><div id="seeAlsoSection" class="section" name="collapseableSection" style=""><div class="seeAlsoStyle"><a href="AllMembers_T_Microsoft_Test_LeakDetection_MemorySnapshot.htm">MemorySnapshot Members</a></div><div class="seeAlsoStyle"><a href="N_Microsoft_Test_LeakDetection.htm">Microsoft.Test.LeakDetection Namespace</a></div></div></div>
      <div id="footer">
        <div class="footerLine">
          <img width="100%" height="3px" src="../icons/footer.gif" title="Footer image" />
        </div>
        <A NAME="feedback"></A>
        <span id="fb" class="feedbackcss" style="display: none;"> </span>
<p />Send comments on this topic to
        <a id="HT_MailLink" href="mailto:testapi%40microsoft.com?Subject=.">testapi@microsoft.com</a>
        <script type="text/javascript">
        var HT_mailLink = document.getElementById("HT_MailLink");
        var HT_mailLinkText = HT_mailLink.innerHTML;
        HT_mailLink.href += ": " + document.title;
        HT_mailLink.innerHTML = HT_mailLinkText;
        </script> </div>
    </div>
  </body>
</html>